Skip to content

メッセージ

メッセージは、ao内の基本的なデータプロトコル単位として機能し、ANS-104 DataItemsから作成されているため、Arweaveのネイティブな構造と一致しています。プロセス内で使用される場合、メッセージは次のように構成されます:

lua
{
    Cron = false,
    Data = "Hello aos",
    Epoch = 0,
    From = "5WzR7rJCuqCKEq02WUPhTjwnzllLjGu6SA7qhYpcKRs",
    Id = "ayVo53qvZswpvxLlhMf8xmGjwxN0LGuHzzQpTLT0_do",
    Nonce = 1,
    Owner = "z1pq2WzmaYnfDwvEFgUZBj48anUsxxN64ZjbWOsIn08",
    Signature = "...",
    Tags = {
        Type = "Message",
        Variant = "ao.TN.1",
        ["Data-Protocol"] = "ao",
        ["From-Module"] = "lXfdCypsU3BpYTWvupgTioLoZAEOZL2_Ihcqepz6RiQ",
        ["From-Process"] = "5WzR7rJCuqCKEq02WUPhTjwnzllLjGu6SA7qhYpcKRs"
    },
    Target = "5WzR7rJCuqCKEq02WUPhTjwnzllLjGu6SA7qhYpcKRs",
    Timestamp = 1704936415711,
    ["Block-Height"] = 1340762,
    ["Forwarded-By"] = "z1pq2WzmaYnfDwvEFgUZBj48anUsxxN64ZjbWOsIn08",
    ["Hash-Chain"] = "hJ0B-0yxKxeL3IIfaIIF7Yr6bFLG2vQayaF8G0EpjbY"
}

このアーキテクチャは、Assignment Type(割り当てタイプ)とMessage Type(メッセージタイプ)を統合し、プロセスがメッセージのコンテキストを包括的に理解し、効果的に処理できるようにします。

メッセージを送信する際、メッセージがaoコンピュータ内をどのように移動するかを示したビジュアルダイアグラムです。

Message Workflow

メッセージワークフローは、MU(Messenger Unit)でメッセージの署名が認証されるところから始まります。その後、SU(Scheduler Unit)がメッセージにEpochとNonceを割り当て、メッセージをAssignment Type(割り当てタイプ)と一緒にバンドルし、Arweaveに送信します。その後、aoconnectライブラリがCU(Compute Unit)から結果を取得します。CUは、現在のMessage IDに至るまでのすべてのメッセージをSU(Scheduler Unit)から取得し、それらを処理して結果を導き出します。処理が完了すると、計算結果はaoconnectに返され、これはaosなどのクライアントインターフェイスに統合されています。

Ethereum署名メッセージ

メッセージがEthereumキーを使用して署名されたANS-104 DataItemである場合、
OwnerおよびFromフィールドの値は、署名者のEIP-55形式のEthereumアドレスになります。
例えば:0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359

まとめ

メッセージは、aoネットワークの主要なデータプロトコルタイプとして機能し、ArweaveのネイティブであるANS-104データアイテムを活用します。メッセージは、データコンテンツ、送信元、送信先、署名やノンスなどの暗号化要素を含むいくつかのフィールドを持っています。ワークフローは、Messenger Unit(MU)から始まり、ここで署名が確認され、Scheduler Unit(SU)を通過してタイムスタンプとシーケンスが割り当てられた後、Arweaveにバンドルされて公開されます。その後、aoconnectライブラリがCompute Unit(CU)から結果を読み取り、メッセージを処理して結果を計算し、aoconnectを通じてクライアント(aosなど)に返送します。CUは、これらのプロセスの実行環境です。